package com.xsd.observer.improve;

import java.util.ArrayList;

/**
 * 此类是核心
 * 1. 包含最新的天气情况信息
 * 2. 含有 观察者集合 使用arraylist 管理
 * 3. 当数据有更新时，就主动的调用   Arraylist 通知所有的接入方
 * @author Administrator
 *
 */
public class WeatherData implements Subject {
	private float temperatrue;
	private float pressure;
	private float humidity;
	// 观察者集合
	private ArrayList<Observer> observers;
	//加入新的第三方


	public WeatherData() {
		this.observers = new ArrayList<>();
	}

	public void dataChange() {
		//调用 接入方的 update
//		currentConditions.update(getTemperature(), getPressure(), getHumidity());
		notifyObservers();
	}

	//当数据有更新时，就调用 setData
	public void setData(float temperature, float pressure, float humidity) {
		this.temperatrue = temperature;
		this.pressure = pressure;
		this.humidity = humidity;
		//调用dataChange， 将最新的信息 推送给 接入方 currentConditions
		dataChange();
	}

	@Override
	public void registerObserver(Observer o) {
		observers.add(o);
	}

	@Override
	public void removeObserver(Observer o) {
		if (observers.contains(o)){

			observers.remove(o);
		}
	}

	// 遍历所有的观察者，并通知
	@Override
	public void notifyObservers() {
		for (int i = 0; i <observers.size() ; i++) {
			observers.get(i).update(this.temperatrue, this.temperatrue,this.humidity);
		}
	}

	public float getTemperature() {
		return temperatrue;
	}

	public float getPressure() {
		return pressure;
	}

	public float getHumidity() {
		return humidity;
	}


}
